<?php 
namespace xfyzf\api\controller;
class QQ_Protocol{
        /**
         * 获取 QQ钱包云端登录的二维码
         *
         * @param string $type QQ钱包云端登录的类型
         * @param string $qq QQ号码
         * @param int|string $xf_type 支付类型
         * @return array|bool 返回二维码的相关信息数组或者失败时返回false
         */
        public static function Get_QQPCQrLogin($type, $qq, $xf_type) {
            global $xf_url;
            
            // 如果不是 QQ 钱包类型，则返回false
            if ($type !== 'qqpay') return false;
            $return = array();
            // 根据支付类型选择不同的获取二维码的方式
            if ($xf_type == 2 || $xf_type == '1') {
                // 使用默认方式获取二维码
                $url = $xf_url."/api/QQPC.php?act=getqrcode&url=".$_SERVER['HTTP_HOST'];
               
                $data = get_curl($url);
                $json = json_decode($data, true);
                if ($json) {
                    // 返回二维码的相关信息数组
                    $return= array('qr_url' => $json['qr_url'], 'type' => $type, 'qr_id' => $json['qr_id']);   
                }
            } else {
                // 根据支付类型获取相应的参数
                $xy = self::qqpcxy($xf_type);
                // 构建获取二维码的URL
                $url = $xf_url."/api/qqweb.php?act=getqrcode&url=".$_SERVER['HTTP_HOST']."&qq=".$qq."&xy=".$xy; 
                 $data = get_curl($url);
                 $json = json_decode($data, true);
                 if($json){
                     $return = array('qr_url'=>$json['qr_url'],'type'=>$type,'qr_id'=>$json['qr_id']);   
                 }
            }
            return $return;
            
        }
        
        /**
         * 根据支付类型获取 QQ钱包云端登录的参数
         *
         * @param int|string $xf_type 支付类型
         * @return string 返回 QQ钱包云端登录的参数
         */
        public static function qqpcxy($xf_type) {
            // 根据支付类型返回相应的参数
            if ($xf_type == '3') {
                return '10';
            } elseif ($xf_type == '4') {
                return '11'; 
            } elseif ($xf_type == '5') {
                return '9'; 
            }
        }
        
        /**
         * 获取 QQ钱包云端登录状态
         *
         * @param string $type QQ钱包云端登录的类型
         * @param string|null $qq QQ号码
         * @param int|string $xf_type 支付类型
         * @return int 返回登录状态码，1表示登录成功，6表示等待扫码，-1表示失败
         */
        public static function GET_JIANCE($type, $qq = NULL, $xf_type) {
            global $xf_url;
            
            // 如果不是 QQ 钱包类型，则返回false
            if ($type !== 'qqpay' || !$qq) return -1;
            
            // 根据支付类型构建获取登录状态的URL
            $url = ($xf_type == '2' || $xf_type == '1') ? $xf_url."/api/QQPC.php?act=gerqrmsg&qq=".$qq : $xf_url."/api/qqweb.php?act=gerqrmsg&qq=".$qq;
            
            // 发送请求获取数据
            $data = get_curl($url);
            $json = json_decode($data, true);
            $code = $json['code'];
            
            // 根据返回的状态码返回相应的状态
            if ($code == '1') { // 登录成功
                return 1;  
            } elseif ($code == '2') { // 等待扫码
                return 6;
            } else { // 其他情况
                return -1;    
            }
        }
        /**
         * 获取 QQ 钱包 PC 登录的 Cookie 信息
         * 
         * @param string $beizhu QQ 号
         * @param string $xf_type QQ 协议类型
         * @return array 返回包含 Cookie 信息的关联数组
         */
        public static function GET_QQPCCOOKIE($beizhu, $xf_type){
             global $xf_url;
            // 判断 xf_type 类型，确定调用的 API
            $api = ($xf_type == '1' || $xf_type == '2') ? "QQPC.php" : "qqweb.php";
        
            // 构建 API 地址
            $url = $xf_url."/api/{$api}?act=chacookie&qq={$beizhu}&url=" . $_SERVER['HTTP_HOST'];
        
            // 发送请求获取数据
            $data = get_curl($url);
        
            // 解析 JSON 数据
            $json = json_decode($data, true);
        
            return $json;
        }
}

?>